iT邦幫忙

2021 iThome 鐵人賽

DAY 25
1
Software Development

溫柔學姐的Kotlin補課/教學系列 第 25

給別人前先包裝:套件、匯入、存取修飾詞 Packages, imports and Visibility modifiers

  • 分享至 

  • xImage
  •  

「如果有一天,我也寫函式庫,要怎麼分享呢?」詩憶好奇的問。

唯心笑了笑。「首先要先定義package name呢。還記得之前寫網路連線的import okhttp3.OkHttpClient嗎?後面的okhttp3.OkHttpClient就是該函式的package name。」

詩憶疑惑。「沒有package name也能寫函式的話,為什麼要package name呢?」

package name很類似資料夾的概念,okhttp3.OkHttpClient可以想成okhttp3資料夾下的OkHttpClient檔案。如果都沒有package name,那同樣名稱的檔案不就衝突了嗎?」唯心解釋。

「原來是這樣啊。那package name也盡量要取的比較不容易和其他人重複囉?」

「是呀,但是也不要取一些沒有意義的名字,這樣要搜尋的時候不是很容易呢。package name一般都是二到四個層級,第一個會放組織,比如公司就會放comco,但我們只是作業就放學號吧;第二個通常就放專案名稱,第三個可以放功能,所以即使是同個函式庫也能擁有多個package name成員,但函式庫外層需要獨一無二的artifact id。」

詩憶寫了幾個備選package name,最後決定統一用u1234567.exercise開頭,宣告放在檔案第一行。

pacakge u1234567.exercise

fun main() {
}

「對了,同一層的package之間的檔案可以直接互相引用類別和函式,但是有標注private存取修飾詞的除外。至於其他層的檔案都要寫import喔。如果想要匯入多層package,可以使用.*的做法。但是如果匯入太多沒有用到的函式庫,只是徒增建置所花的時間和建置檔案的大小唷。」

import u1234567.exercise.*

詩憶突然想到。「基本函式庫都不用匯入耶?」

「是的,都存放在預設區,建置的時候能直接引用。基本函式庫有很多呢。」唯心如此說著。

kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*

上一篇
放開那本字典:匿名函式 anonymous function
下一篇
有限資源分配:coroutines 非同步 suspend async
系列文
溫柔學姐的Kotlin補課/教學31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言